/*
  1. 初始化为项目
    npm init 手动输入项目名 避免默认名字报错
  2. 下载dayjs
*/
const dayjs = require('dayjs')

// 1. 导入 http 模块
const http = require('http')
const db = require('./db/index.js')

// 2. 创建 web 服务器实例
const server = http.createServer()

// 3. 启动服务器
server.listen(6688, () => {
  console.log('my server start work')
})

// 4. 为服务器实例绑定 request 事件，监听客户端的请求
server.on('request', (request, response) => {
  // 设置响应的内容为JSON
  response.setHeader('Content-Type', 'application/json; charset=utf-8')
  // 不能直接响应 对象/数组 需要转为字符串 JSON.stringify
  console.log(request.url)
  console.log(request.method)

  // get请求 并且 请求的url地址 为 要求的值 返回
  if (request.method === 'GET' && request.url === '/api/students') {
    // 调用数据模块的学生方法 并 获取数据 转为JSON 返回
    const res = db.students()
    // console.log('res:', res)
    // response.end('students')
    response.end(JSON.stringify(res))
  } else if (request.method === 'GET' && request.url === '/api/luckystar') {
    // 调用数据模块的学生方法 并 获取数据 转为JSON 返回
    const lucky = db.luckystar()
    // console.log('res:', res)
    // response.end('students')
    response.end(JSON.stringify(lucky))
  } else if (request.method === 'GET' && request.url === '/api/news') {
    // 调用数据模块的学生方法 并 获取数据 转为JSON 返回
    const news = db.news()
    // console.log('res:', res)
    // news 循环+转换日期
    const formatNews = news.map(v => {
      // 转换日期并赋值
      v.publish_time = dayjs(v.publish_time).format('YYYY-MM-DD HH:mm:ss')
      // 返回转化之后的结果
      return v
    })
    // response.end('students')
    response.end(JSON.stringify(formatNews))
  }
})
